package com.jrx.anytxn.param.service.sms;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.sms.PrSmsSendingRulesTableReq;
import com.jrx.anytxn.param.dto.sms.PrSmsSendingRulesTableRes;
import com.jrx.anytxn.param.entity.PrSmsSendingRules;

import java.util.List;

/**
 * @Classname ISmsSendingRulesService
 * @Description 短信规则接口层
 * @Date 2019/12/6
 * @Created lbz
 */
public interface ISmsSendingRulesService {

    /**
     * 通过规则ID和租户ID查询短信模板信息
     *
     * @param rulesId 规则ID
     * @param tenantId  租户ID
     * @return SmsTemplateTableRes
     * @author lbz
     * date: 2019/12/5
     */
    PrSmsSendingRulesTableRes getByTenIdIdAndRulesId(String tenantId, String rulesId) throws TxnException;

    /**
     * 添加短信规则
     *
     * @param request 请求参数
     * @return PrSmsSendingRulesTableRes
     * @author lbz
     * 2019/12/6
     */
    PrSmsSendingRulesTableRes addSmsSendingRules(PrSmsSendingRulesTableReq request) throws TxnException;

    /**
     * 根据租户ID分页查询规则信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param prSmsSendingRules 查询请求req
     * @return TxnPage<PrSmsSendingRulesTableRes>
     * @author lbz
     * date: 2019/12/6
     */
    TxnPage<PrSmsSendingRulesTableRes> findAllPageByCondition(Integer pageNum, Integer pageSize, PrSmsSendingRules prSmsSendingRules) throws TxnException;

    /**
     * 获取所有短信规则列表
     *
     * @param tenantId 租户ID
     * @return List<PrSmsSendingRulesTableRes>
     * @author lbz
     * date: 2019/12/6
     */
    List<PrSmsSendingRulesTableRes> findAllSmsSendingRulesByTenId(String tenantId);

    /**
     * 根据租户ID和规则ID编辑信息
     *
     * @param request 短信规则参数
     * @return PrSmsSendingRulesTableRes
     * @author lbz
     * date: 2019/12/6
     */
    PrSmsSendingRulesTableRes modifySmsSendingRules(PrSmsSendingRulesTableReq request) throws TxnBizException;

    /**
     * 根据租户ID和规则ID删除信息
     *
     * @param tenantId 租户ID
     * @param rulesId   规则ID
     * @return java.lang.Boolean
     * @author lbz
     * date: 2019/12/6
     */
    Boolean removeByTenantIdAndRulesId(String tenantId, String rulesId) throws TxnBizException;


    /**
     * 根据产品编号，短信类型，发送状态查询短信模板
     *
     * @param productId 产品编号
     * @param smsType   短信类型
     * @param sumStatus 交易类型 S 成功 F 失败
     * @param tenantId 租戶id
     * @return PrSmsSendingRulesTableRes
     * @author lbz
     * date: 2019/12/6
     */
    PrSmsSendingRules getByProductIdAndSmsTypeAndSumStatus(String productId, String smsType, String sumStatus, String tenantId);


}
